/************************************************************************/
/* Name : Kiwon Yun
/* Partner's name : Eric Rooney
/* File Name : Hand.h
/* The name of assignment : Iteration 2
/************************************************************************/

#ifndef HAND_H
#define HAND_H

#include "Common.h"
#include "Card.h"

/************************************************************************/
/* Hand class can have five cards.
/* This class manages these cards, has functions such as view, fold, discard, and so on.
/************************************************************************/

class Hand
{
public:
	/**	 Constructor */
	Hand(void);

	/**  Destructor */
	virtual ~Hand(void);

	/***********************************************************************
	* A card add to a hand.
	************************************************************************/
	void AddCard( Card* a_pCard );
	
	/***********************************************************************
	* Displays the contents of the hand.
	************************************************************************/
	void ShowHand();

	/***********************************************************************
	* Deletes element in hand
	************************************************************************/
	void DeleteCard(bool m_bDlt1,bool m_bDlt2,bool m_bDlt3,bool m_bDlt4,bool m_bDlt5);
	
	/***********************************************************************
	* Reorders cards in hand after cards have been deleted 
	************************************************************************/
	void ReorderCards(bool m_bDlt1,bool m_bDlt2,bool m_bDlt3,bool m_bDlt4,bool m_bDlt5);
	
	/***********************************************************************
	* Reorders cards in hand after new cards have been inserted
	************************************************************************/
	void FinalReorderCards( bool m_bDlt1,bool m_bDlt2,bool m_bDlt3,bool m_bDlt4,bool m_bDlt5);

	/***********************************************************************
	* Return the card at an index
	************************************************************************/
	Card* GetCard( int a_nIndex );

	/***********************************************************************
	* Clear the cards from the hand
	************************************************************************/
	void ClearHand();

private:

	/* A vector containing the cards in the hand. */
	vector <Card*> m_vecCard; 
};

#endif
